package cn.tedu.luban.account.main.service;

import cn.tedu.luban.account.main.repository.AccountRepository;
import cn.tedu.luban.account.protocol.bo.AccountBO;
import cn.tedu.luban.account.protocol.param.AccountCreateParam;
import cn.tedu.luban.account.protocol.param.AccountPayParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class AccountService {

    /**
     * 新增一个账户：
     * 保证幂等：
     * 方案1：一个userId 只能绑定一个账户，先删除旧帐号，再新增
     * 方案2： 利用userId 判断是否已有账户，如果有的话，就不再创建了
     *
     *
     */

    @Autowired
    private AccountRepository accountRepository;

    public Long createAccount(AccountCreateParam accountCreateParam) {
        //查询账户对象
        AccountBO accountBO = accountRepository.getAccountByUserId(accountCreateParam.getUserId());
        //判断账户是否存在
        if (accountBO ==null || accountBO.getId() ==null){
            //不存在师傅账户，需要新增
            Long account=accountRepository.save(accountCreateParam);
            return account;
        }else {
            return 0L;
        }
    }

    public AccountBO getAccount(Long userId) {
        return accountRepository.getAccountByUserId(userId);
    }

    public Long mockPayment(AccountPayParam param) {
        return accountRepository.updateTotalAmount(param);
    }
}
